<?php


class ImmeubleManager {

    public function __construct(Mypdo $db){
        $this->db= $db;
    }

    public function add(Immeuble $immeuble){
        $req = $this->db->prepare('INSERT INTO immeuble ( id_propri, digicode_immeu, nom_immeu, descp_immeu,
                  num_ad_immeu, voie_ad_immeu, cp_ad_immeu, ville_ad_immeu ) VALUES
                  ( :id_propri, :digicode_immeu, :nom_immeu, :descp_immeu, :num_ad_immeu, :voie_ad_immeu, :cp_ad_immeu, :ville_ad_immeu)');
        $req->bindValue(':nom_immeu', $immeuble->getNomImmeu(), PDO::PARAM_STR);
        $req->bindValue(':descp_immeu', $immeuble->getDescpImmeu(), PDO::PARAM_STR);
        $req->bindValue(':digicode_immeu', $immeuble->getDigicodeImmeu(), PDO::PARAM_STR);
        $req->bindValue(':id_propri', $immeuble->getIdPropri(), PDO::PARAM_INT);


        $req->bindValue(':num_ad_immeu', $immeuble->getAdresseImmeu()->getNumAdresse(), PDO::PARAM_INT);
        $req->bindValue(':voie_ad_immeu', $immeuble->getAdresseImmeu()->getVoieAdresse(), PDO::PARAM_STR);
        $req->bindValue(':cp_ad_immeu', $immeuble->getAdresseImmeu()->getCpAdresse(), PDO::PARAM_STR);

        $req->bindValue(':ville_ad_immeu', $immeuble->getAdresseImmeu()->getVilleAdresse(), PDO::PARAM_STR);


        $req->execute();
        return $this->db->lastInsertId();
    }


    public function getList(){
        $listeImmeubles = array();
        $sql = 'SELECT * FROM immeuble ORDER BY id_immeu';
        $req = $this->db->query($sql);
        while ($immeuble = $req->fetch(PDO::FETCH_OBJ)){
            $listeImmeubles[] = new Immeuble($immeuble);
        }
        $req->closeCursor();
        return $listeImmeubles;

    }


    public function getImmeu($id_immeu){
        $sql = 'SELECT * FROM immoloc.immeuble WHERE id_immeu = :id_immeu';
        $req = $this->db->prepare($sql);
        $req->bindValue(':id_immeu', $id_immeu, PDO::PARAM_INT);
        $req->execute();
        $liste = $req->fetch(PDO::FETCH_ASSOC);
        $immeu = new Immeuble($liste);
        $immeu->setAdresseImmeu(new Adresse($liste));
        return $immeu;
    }

    public function  delImmeubleByIdPropri($id_propri){
        $sql = 'DELETE FROM immoloc.immeuble WHERE id_propri = :id_propri';
        $req = $this->db->prepare($sql);
        $req->bindValue(':id_propri', $id_propri, PDO::PARAM_INT);

        $req->execute();
    }

    public function  delImmeuble($id_immeu){
        $sql = 'DELETE FROM immoloc.immeuble WHERE id_immeu = :id_immeu';
        $req = $this->db->prepare($sql);
        $req->bindValue(':id_immeu', $id_immeu, PDO::PARAM_INT);

        $req->execute();
    }

    public function update(Immeuble $immeu)
    {
        $adresse = $immeu->getAdresseImmeu(); var_dump($adresse);
        $req = $this->db->prepare('UPDATE immeuble SET id_propri = :id_propri, digicode_immeu = :digicode_immeu, nom_immeu = :nom_immeu, descp_immeu = :descp_immeu,
                  num_ad_immeu = :num_ad_immeu, voie_ad_immeu = :voie_ad_immeu, cp_ad_immeu = :cp_ad_immeu, ville_ad_immeu = :ville_ad_immeu
                   WHERE id_immeu = :id_immeu');

        $req->bindValue(':id_immeu', $immeu->getIdImmeu(), PDO::PARAM_INT);

        $req->bindValue(':id_propri', $immeu->getIdPropri(), PDO::PARAM_INT);
        $req->bindValue(':digicode_immeu', $immeu->getDigicodeImmeu(), PDO::PARAM_STR);
        $req->bindValue(':nom_immeu', $immeu->getNomImmeu(), PDO::PARAM_STR);
        $req->bindValue(':descp_immeu', $immeu->getDescpImmeu(), PDO::PARAM_STR);
        $req->bindValue(':num_ad_immeu', $adresse->getNumAdresse(), PDO::PARAM_STR);
        $req->bindValue(':voie_ad_immeu', $adresse->getVoieAdresse(), PDO::PARAM_STR);
        $req->bindValue(':cp_ad_immeu', $adresse->getCpAdresse(), PDO::PARAM_STR);
        $req->bindValue(':ville_ad_immeu', $adresse->getVilleAdresse(), PDO::PARAM_STR);


        $req->execute();

    }

    public function getListByIdPropri($id_propri)
    {
        $listeImmeubles = array();
        $sql = 'SELECT * FROM immeuble WHERE id_propri = :id_propri ORDER BY id_immeu';
        $req = $this->db->prepare($sql);
        $req->bindValue(':id_propri', $id_propri, PDO::PARAM_INT);

        $req->execute();
        while ($immeuble = $req->fetch(PDO::FETCH_OBJ)){
            $listeImmeubles[] = new Immeuble($immeuble);
        }
        $req->closeCursor();
        return $listeImmeubles;
    }

} 